home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
NetNews Offline 2
/
NetNews Offline Volume 2.iso
/
news
/
comp
/
std
/
c
/
79
< prev
next >
Wrap
Text File
|
1996-08-06
|
2KB
|
51 lines
Newsgroups: comp.std.c
Path: phcoms4.seri.philips.nl!panther!baynes
From: baynes@ukpsshp1.serigate.philips.nl (Stephen Baynes)
Subject: Re: int's and zero
Sender: news@ukpsshp1.serigate.philips.nl (account for localnews)
Message-ID: <DL0CII.F9A@ukpsshp1.serigate.philips.nl>
Date: Thu, 11 Jan 1996 08:20:41 GMT
References: <4cth4e$4q@odin.funcom.no> <4cub1a$jbl@alterdial.UU.NET> <4d0kd3$d8l@sam.inforamp.net>
Organization: Philips Semiconductors, Southampton, UK
X-Newsreader: TIN [version 1.2 PL2]
Peter Curran (pcurran@inforamp.net) wrote:
: On 9 Jan 1996 18:09:46 GMT in article <4cub1a$jbl@alterdial.UU.NET>
: rex@aussie.com (rex@aussie.com) wrote:
: >There was considerable debate about whether or not integers could be stored
: >as BCD, Grey code, or some such, but in the end, we decided that they had to
: >be stored as binary numbers. And, of course, 2's comp, 1's comp, and signed
: >magnitude all use all-bits-zero for zero. The only thing that could cause a
: >problem is for machines/compilers with signed zeros; I think that negative
: >zero might have some other bit pattern.
: I don't think this is the full story. The *used* bits have to be zero.
: However, there has been agreement that the integers can have "holes" (unused
: bits), and those bits could be required to be non-zero in some architectures, I
: would think.
Also (under as-if) the bits one sees probably only have to look like binary
to operations such as & and <<. For example I think it is possible to
do something like invert the bits as you read/write memory. Consider this
perverse implementation:
char - normal binary encoding
int - binary encoding except that bits are inverted when reading/writing
memory.
Thus binary 0000 written as char will look like binary 1111 when read as int.
So 'memset( &i, 0, sizeof(int) )' will not set int 'i' to 0.
However ints can be copied safely by copying them as an array of char.
Provided normal conversion between int and char works to give the expected
arithmetic results I think that this implementation should meet the standard.
P.S. Was there ever a final ruling over whether UINT_MAX had to be of the
form 2^n-1 ?
--
Stephen Baynes baynes@mulsoc2.serigate.philips.nl
Philips Semiconductors Ltd
Southampton My views are my own.
United Kingdom